home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / gus / vts139b.zip / SHELLVT.PAS < prev    next >
Pascal/Delphi Source File  |  1993-12-31  |  3KB  |  140 lines

  1. PROGRAM ShellVT;
  2.  
  3. {$M 20000, 0, 655360}
  4.  
  5. USES Dos,
  6.      VTSpecial, VTGlobal, VTCfg, VTCmd, 
  7.      SoundDevices, {DevSB, DevSbDac, DevDAC, DevSpkr, DevAdlib, }DevGus,
  8.      PlayMod, ModCommands, SongUnit, SongUtils,
  9.      CmdLine, Heaps, Debugging, FileUtil;
  10.  
  11.  
  12.  
  13.  
  14. VAR
  15.   NoMods : BOOLEAN;
  16.  
  17. FUNCTION DoOneMOD(FName: PathStr; InsidePath: PathStr) : BOOLEAN; FAR;
  18.   VAR
  19.     Song     : TSong;
  20.     HeapSize : LONGINT;
  21.   BEGIN
  22.     NoMods   := FALSE;
  23.     DoOneMOD := TRUE;
  24.  
  25.     IF ShellLoopMod THEN
  26.       BEGIN
  27.         LoopMod      := TRUE;
  28.         ForceLoopMod := TRUE;
  29.       END;
  30.  
  31.     SetVTDevice;
  32.     ActiveDevice^.Autodetect;
  33.     SetVTFreq;
  34.     MaxOutputFreq := DesiredHz;
  35.  
  36.     FillChar(UserVols, SIZEOF(UserVols), VtVolume);
  37.  
  38.     Song.Init;
  39.  
  40.     Song.SetInsidePath(InsidePath);
  41.  
  42.     IF VT1stPattern <> 0 THEN
  43.       Song.SongStart := VT1stPattern;
  44.  
  45.     IF VTSongLen <> 0 THEN
  46.       Song.SongLen := VTSongLen;
  47.  
  48.     StartSampling;
  49.  
  50.     Song.LoadFName(FName);
  51.  
  52.     IF Song.Status <= msFileTooShort THEN
  53.       BEGIN
  54.         DoOneMOD := FALSE;
  55.  
  56.         FirstPattern := VT1stPattern;
  57.         RepStart     := VTRepStart;
  58.         SongLen      := VTSongLen;
  59.  
  60.         PlayStart(Song);
  61.  
  62.         WriteLn('Type EXIT to uninstall ShellVT');
  63.  
  64.         HeapSize := Heap.HTotalAvail;
  65.         ShrinkSystemHeap(0);
  66.         SwapVectors;
  67.         Exec(ShellPath, ShellParam);
  68.         SwapVectors;
  69.         ShrinkSystemHeap(HeapSize);
  70.  
  71.         PlayStop;
  72.         EndSampling;
  73.  
  74.         WriteLn;
  75.         WriteLn('┌──────────────────────┐');
  76.         WriteLn('│ ShellVT uninstalled. │');
  77.         WriteLn('└──────────────────────┘');
  78.       END
  79.     ELSE
  80.       WriteLn(#13'Error en el fichero: '+FName);
  81.  
  82.     Song.Done;
  83.   END;
  84.  
  85.  
  86.  
  87.  
  88. CONST
  89.   NombreApp = 'ShellVT';
  90.  
  91.   AppID : STRING[Length(NombreApp) + 2 + Length(Version) + Length(BetaStr)] =
  92.             NombreApp+' v'+Version+BetaStr;
  93.  
  94. VAR
  95.   s       : STRING;
  96.   i, r    : WORD;
  97.  
  98. BEGIN
  99.  
  100.   WriteLn;
  101.   WriteLn(    '     ┌─────────────────────────────────────────────────────┐');
  102.   WriteLn(    '     │ '+NombreApp+'. Resident version of VangeliSTracker, v'+Version+' │');
  103.   WriteLn(    '     │               (C) 1992-93  VangeliSTeam             │');
  104.   WriteLn(    '     └─────────────────────────────────────────────────────┘');
  105.   WriteLn(    '                            '+BetaStr);
  106.  
  107.   IF ParamCount = 0 THEN
  108.     BEGIN
  109.       WriteLn(' ┌────────────────────────────────────────────────────────────────────────┐');
  110.       WriteLn(' │ ShellVT  <file.MOD|.OKT|.S3M|.STM|.669| etc] [<options>] [@<file.VTO>] │');
  111.       WriteLn(' └────────────────────────────────────────────────────────────────────────┘');
  112.       WriteLn('');
  113.       WriteLn('   For a list of options, run the VT program without parameters.');
  114.       HALT(1);
  115.     END;
  116.  
  117.   VTResidentCheck(AppID);
  118.  
  119.   Debugging.Debug := FALSE;
  120.  
  121.   InitHeapVariables;
  122.   InitUmbHeap;
  123.  
  124.   Cmd.Init;
  125.   SongColl.Init(1, 1);
  126.  
  127.   InitSoundDevices;
  128.   InitModUnit;
  129.  
  130.   DesiredHz  := ShellHz;
  131.   OneModProc := DoOneMod;
  132.  
  133.   NoMods := TRUE;
  134.  
  135.   Cmd.ParseLine(GetDOSCmdLine);
  136.   IF DoSongColl(Cmd.FileDir) THEN
  137.     IF NoMods THEN
  138.       WriteLn('No encuentro ninguna canción.');
  139. END.
  140.